package com.liuzh.websocket.dao;

import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2017/10/12.
 */
public interface Dao<T> {
	/**
	 * 保存一个实体对象
	 * @param t
	 * @return
	 * @throws Exception
	 */
    public T save(T t) throws Exception;
    /**
     * 更新一个实体对象
     * @param t
     * @return
     * @throws Exception
     */
    public T update(T t) throws Exception;
    /**
     * 删除一个实体对象
     * @param t
     * @return
     * @throws Exception
     */
    public T delete(T t) throws Exception;
    /**
     * 通过id查询单个实体对象
     * @param clazz
     * @param primaryKey
     * @return
     * @throws Exception
     */
    public T query(Class<T> clazz, int primaryKey) throws Exception;
    /**
     * 通过id查询单个实体对象
     * @param clazz
     * @param primaryKey
     * @return
     * @throws Exception
     */
    public T query(Class<T> clazz, Long primaryKey) throws Exception;
    /**
     * 通过sql查询map数据类型记录
     * @param sql
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> querySql(String sql) throws Exception;
    /**
     * 通过sql查询单条map数据类型记录
     * @param sql
     * @return
     * @throws Exception
     */
    public Map<String, Object> querySqlOne(String sql) throws Exception;
    /**
     * 通过sql查询指定实体对象
     * @param clazz
     * @param sql
     * @return
     * @throws Exception
     */
    public T querySqlOne(Class<T> clazz,String sql) throws Exception;
    /**
     * 通过sql、page、rows查询分页记录
     * @param sql
     * @param page
     * @param rows
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> querySql(String sql, int page, int rows) throws Exception;
    /**
     * 通过sql、rows查询总页数
     * @param sql
     * @param rows
     * @return
     * @throws Exception
     */
	public int querySqlCount(String sql, int rows) throws Exception;
	/**
	 * 通过sql更新数据记录
	 * @param sql
	 * @throws Exception
	 */
	public void updateSql(String sql) throws Exception;
}
